Абстрактные методы
Абстрактные методы содержат только определение метода без реализации. Предполагается, что класс-потомок должен переопределить метод и реализовать его функциональность. Чтобы такое предположение сделать более очевидным, часто внутри абстрактного метода возбуждают исключение.
Абстрактные методы
class Class1(object):
def test(self, x): # Абстрактный метод
# Возбуждаем исключение с помощью raise
raise NotImplementedError("Необходимо переопределить метод")
class Class2(Class1): # Наследуем абстрактный метод
def test(self, x): # Переопределяем метод
print x
class Class3(Class1): # Класс не переопределяет метод
pass
c2 = Class2()
c2.test(50) # Выведет: 50
c3 = Class3()
try: # Перехватываем исключения
c3.test(50) # Ошибка. Метод test() не переопределен
except NotImplementedError, msg:
print msg # Выведет: Необходимо переопределить метод
Далее...
Обсудить (3)